﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DTO;
using BUS;
namespace GUI
{
    public partial class uc_NhapHang : DevExpress.XtraEditors.XtraUserControl
    {

        public uc_NhapHang()
        {
            InitializeComponent();
        }
        RegulationBL bl = new RegulationBL();
        RegulationDTO reg1 = new RegulationDTO();
        RegulationDTO reg2 = new RegulationDTO();
        MobileBL mobileBL = new MobileBL();
        AccessoryBL accessBL = new AccessoryBL();
        List<MobileDTO> ListMobile = new List<MobileDTO>();
        List<AccesoryDTO> ListAccess = new List<AccesoryDTO>();
        DataTable dt = new DataTable();
        AddAccessoryDetailBL addaccdetailBl = new AddAccessoryDetailBL();
        AddMobileDetailBL addmobiledetailBl = new AddMobileDetailBL();
        AddGoodsBL addgoodBl = new AddGoodsBL();
        List<AddAccessoryDetailDTO> ListAccessoryDetail = new List<AddAccessoryDetailDTO>();
        List<AddMobileDetailDTO> ListMobileDetail = new List<AddMobileDetailDTO>();
        private void KeyPress(object sender, KeyPressEventArgs e)
        {

        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (int.Parse(txtSoLuongNhap.Text) == 0 || int.Parse(txtDonGiaNhap.Text) == 0)
            {
                MessageBox.Show("Yêu cầu đầy đủ thông tin bán hàng");
            } 
            else
            {
                if (cbbLoaiHang.SelectedIndex == 0)
            {
                MobileDTO mobile = mobileBL.Mobile_SelectByID(int.Parse(txtMaHang.Text));
                if (mobile.Count <= int.Parse(reg1.Content))
                {
                    mobile.Count += int.Parse(txtSoLuongNhap.Text);
                    mobile.Prize = int.Parse(txtDonGiaNhap.Text);
                    ListMobile.Add(mobile);
                }
                else
                {
                    MessageBox.Show("Không Nhập Hàng có số lượng tồn quá " + reg1.Content, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return;
                }
            }
            else
            {
                AccesoryDTO acc = accessBL.Accessory_SelectByID(int.Parse(txtMaHang.Text));
                if (acc.Count <= int.Parse(reg1.Content))
                {
                    acc.Count += int.Parse(txtSoLuongNhap.Text);
                    acc.Prize = int.Parse(txtDonGiaNhap.Text);
                    ListAccess.Add(acc);
                }
                else
                {
                    MessageBox.Show("Không Nhập Hàng có số lượng tồn dưới " + reg1.Content, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return;
                }
                    
            }
            DataRow dr = dt.NewRow();
            dr.BeginEdit();
            dr["Mã Mặt Hàng"] = txtMaHang.Text;
            dr["Đơn Giá Nhập"] = txtDonGiaNhap.Text;
            dr["Số Lượng Nhập"] = txtSoLuongNhap.Text;
            dr["Tổng Cộng"] = (int.Parse(txtDonGiaNhap.Text) * int.Parse(txtSoLuongNhap.Text)).ToString();
            dr["Loại"] = cbbLoaiHang.Text;
            dr.EndEdit();
            dt.Rows.Add(dr);
            int tongtien;
             tongtien = int.Parse(txtSoLuongNhap.Text) * int.Parse(txtDonGiaNhap.Text) ;
             if (txtTongTien.Text != "")
                 txtTongTien.Text = (tongtien + int.Parse(txtTongTien.Text)).ToString();
             else
                 txtTongTien.Text = tongtien.ToString();
            txtMaHang.Text = "";
            txtNhanHieu.Text = "";
            txtTenHang.Text = "";
            txtSoLuongNhap.Text = "0";
            txtSoLuongTon.Text = "0";
            txtDonGiaNhap.Text = "0";
            txtTinhTrang.Text = "0";
            
            }
            
        }

        private void uc_NhapHang_Load(object sender, EventArgs e)
        {
            dt.Columns.Add("Mã Mặt Hàng");
            dt.Columns.Add("Đơn Giá Nhập");
            dt.Columns.Add("Số Lượng Nhập");
            dt.Columns.Add("Tổng Cộng");
            dt.Columns.Add("Loại");
            gridPhieuNhap.DataSource = dt;
            reg1 = bl.Regulation_SelectByID(1);
            reg2 = bl.Regulation_SelectByID(2);
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (txtMaHang.Text == "" || txtNhanHieu.Text == "" || txtSoLuongTon.Text == "" || txtTenHang.Text == "" || txtDonGiaNhap.Text == "0")
            {
                MessageBox.Show("Yêu cầu chọn mặt hàng");
            } 
            else
            {
                if (MessageBox.Show("Xóa mặt hàng này từ hóa đơn?", "Confirmation", MessageBoxButtons.YesNo) ==
               DialogResult.Yes)
              {
                int id = int.Parse(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[0]).ToString());
                string type = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[4]).ToString();
                txtTongTien.Text = (int.Parse(txtTongTien.Text) - int.Parse(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[3]).ToString())).ToString();
                if (type == "Điện Thoại")
                {
                    foreach (MobileDTO mobile in ListMobile)
                    {
                        if (mobile.MobileID == id)
                        {
                            ListMobile.Remove(mobile);
                            break;
                        }
                    }
                }
                else if (type == "Phụ Kiện")
                {
                    foreach (AccesoryDTO acc in ListAccess)
                    {
                        if (acc.AccessoryID == id)
                        {
                            ListAccess.Remove(acc);
                            break;
                        }
                    }
                }
                dt.Rows.RemoveAt(gridView1.FocusedRowHandle);
            }
            }
            
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Xác nhận cập nhật?", "Confirmation", MessageBoxButtons.YesNo) ==
               DialogResult.Yes)
             {
                if (txtDate.Text == "" || int.Parse(txtTongTien.Text) == 0)
                {
                    MessageBox.Show("Thiếu thông tin phiếu nhập hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                } 
                else
                {
                    try
                 {

                     foreach (MobileDTO mobile in ListMobile)
                     {
                         mobile.Prize *= float.Parse(reg2.Content);
                         mobileBL.Mobile_Update(mobile);
                     }
                     foreach (AccesoryDTO acc in ListAccess)
                     {
                         acc.Prize *= float.Parse(reg2.Content);
                         accessBL.Accessory_Update(acc);
                     }
                     AddGoodsDTO addgoodDTO = new AddGoodsDTO();
                     addgoodDTO.Address = txtDiaChi.Text;
                     addgoodDTO.Date = txtDate.DateTime;
                     addgoodDTO.Phone = txtSDT.Text;
                     addgoodDTO.SupplierName = txtNhaPP.Text;
                     addgoodDTO.TotalAddCost = float.Parse(txtTongTien.Text);
                     txtTongTien.Text = "";
                     addgoodBl.AddGoods_Insert(addgoodDTO);
                     List<AddGoodsDTO> list = new List<AddGoodsDTO>();
                     list = addgoodBl.AddGoods_SelectByDate(txtDate.DateTime);
                     addgoodDTO = list[list.Count - 1];
                     for (int i = 0; i < gridView1.RowCount - 1; ++i)
                     {
                         if (gridView1.GetRowCellValue(i, "Loại").ToString() == "Điện Thoại")
                         {
                             AddMobileDetailDTO dto = new AddMobileDetailDTO();
                             dto.AddID = addgoodDTO.AddID;
                             dto.MobileID = int.Parse(gridView1.GetRowCellValue(i, "Mã Mặt Hàng").ToString());
                             dto.Number = int.Parse(gridView1.GetRowCellValue(i, "Số Lượng Nhập").ToString());
                             dto.PrizeAdd = float.Parse(gridView1.GetRowCellValue(i, "Đơn Giá Nhập").ToString());
                             addmobiledetailBl.AddMobileDetail_Insert(dto);
                         }
                         else if (gridView1.GetRowCellValue(i, "Loại").ToString() == "Phụ Kiện")
                         {
                             AddAccessoryDetailDTO dto = new AddAccessoryDetailDTO();
                             dto.AddID = addgoodDTO.AddID;
                             dto.AccessoryId = int.Parse(gridView1.GetRowCellValue(i, "Mã Mặt Hàng").ToString());
                             dto.Number = int.Parse(gridView1.GetRowCellValue(i, "Số Lượng Nhập").ToString());
                             dto.PrizeAdd = float.Parse(gridView1.GetRowCellValue(i, "Đơn Giá Nhập").ToString());
                             addaccdetailBl.AddAccessoryDetail_Insert(dto);
                         }
                     }
                     MessageBox.Show("Update Successful", "Confirmation", MessageBoxButtons.OK);      
                 }
                 catch (System.Exception ex)
                 {
                     MessageBox.Show("Update Không Thành Công", "Error", MessageBoxButtons.OK);
                     return;
                 }
            }
             
                }
                 
             
        }

        private void KeyPressPrize(object sender, KeyPressEventArgs e)
        {

        }

        private void txtMaHang_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true;
            Constraint.checkLenght(txtMaHang, e, 5);
            Constraint.checkLenght(txtSoLuongNhap, e, 3);
            Constraint.checkLenght(txtDonGiaNhap, e, 8);
            Constraint.checkLenght(txtSDT, e, 11);
        }

        private void txtNhaPP_KeyPress(object sender, KeyPressEventArgs e)
        {
            Constraint.checkLenght(txtNhaPP, e, 100);
            Constraint.checkLenght(txtDiaChi, e, 150);
        }
    }
    
}
